package com.neu.controller;

import com.neu.base.Result;
import com.neu.entity.FpAnalysisValue;
import com.neu.entity.FpDIValue;
import com.neu.service.FPAnalyVService;
import com.neu.service.FpDIValueService;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 *
 * @author 17478
 * @ClassName: FPAnalyVController
 * @description: TODO
 * @date 2024-11-19 0:25
 * @version: 1.0
 */

@RestController
@RequestMapping("/fpa")
public class FpAnalysisValueController {

    @Autowired
    private FPAnalyVService fpAnalyVService; // 注意这里使用的是实例变量

    @Autowired
    private FpDIValueService fpDIValueService; // DI 值服务

    /**
     * 接收任务 ID 和 CF 数据并进行处理
     *
     * @param taskId 任务 ID
     * @param cf     CF 值
     * @return 处理结果
     */
    @PostMapping("/all")
    public Result handleCF(@RequestParam String taskId, @RequestParam float cf) {
        // 调用 Service 层的非静态方法进行处理
        boolean success = fpAnalyVService.processCF(taskId, cf);

//        if (success) {
            return Result.success(success);
//        } else {
//            return Result.error("处理失败");
//        }
    }

        /**
         * 添加功能点评估数据
         *
         * @param fpAnalysisValue 功能点评估值实体
         * @return 添加结果
         */
    @PostMapping("/add")
    @Operation(summary = "添加功能点评估数据")
    public Result<?> addAnalysisValue(@RequestBody FpAnalysisValue fpAnalysisValue) {
        boolean success = fpAnalyVService.save(fpAnalysisValue);
//        return success ? Result.success("数据添加成功") : Result.error("数据添加失败");
        return Result.success(success);
    }

    /**
     * 返回任务 ID 对应的 dfp 值
     *
     * @param taskId 任务 ID
     * @return dfp 值
     */
    @GetMapping("/dfp")
    @Operation(summary = "获取任务的 dfp 值")
    public Result<Float> getDFP(@RequestParam String taskId) {
        FpAnalysisValue analysisValue = fpAnalyVService.getByTaskId(taskId);
//        if (analysisValue != null) {
            return Result.success(analysisValue.getDfp());
//        } else {
//            return Result.error("未找到对应的 dfp 值");
//        }
    }

    /**
     * 返回任务 ID 对应的 s 值
     *
     * @param taskId 任务 ID
     * @return s 值
     */
    @GetMapping("/s")
    @Operation(summary = "获取任务的 s 值")
    public Result<Float> getS(@RequestParam String taskId) {
        FpAnalysisValue analysisValue = fpAnalyVService.getByTaskId(taskId);
//        if (analysisValue != null) {
            return Result.success(analysisValue.getS());
//        } else {
//            return Result.error("未找到对应的 s 值");
//        }
    }

    /**
     * 返回任务 ID 对应的 DI 数据列表
     *
     * @param taskId 任务 ID
     * @return DI 数据列表
     */
    @GetMapping("/di")
    @Operation(summary = "获取任务的 DI 值列表")
    public Result<List<FpDIValue>> getDIList(@RequestParam String taskId) {
        List<FpDIValue> diList = fpDIValueService.getByTaskId(taskId);
//        if (diList != null && !diList.isEmpty()) {
            return Result.success(diList);
//        } else {
//            return Result.error("未找到对应的 DI 数据");
//        }
    }

    /**
     * 返回任务 ID 对应的 cf 值
     *
     * @param taskId 任务 ID
     * @return cf 值
     */
    @GetMapping("/cf")
    @Operation(summary = "获取任务的 cf 值")
    public Result<Integer> getCF(@RequestParam String taskId) {
        FpAnalysisValue analysisValue = fpAnalyVService.getByTaskId(taskId);
//        if (analysisValue != null) {
            return Result.success(analysisValue.getCf());
//        } else {
//            return Result.error("未找到对应的 cf 值");
//        }
    }

    @PostMapping("/finallyCacul")
    public Result finallyCacul(@RequestBody Map map) {
        return fpAnalyVService.finallyCacul(map);
    }



}
